﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProjectEulerSolutions.Problems
{
    /*
     * Consider the isosceles triangle with base length, b = 16, and legs, L = 17.

By using the Pythagorean theorem it can be seen that the height of the triangle, h = √(172 − 82) = 15, which is one less than the base length.

With b = 272 and L = 305, we get h = 273, which is one more than the base length, and this is the second smallest isosceles triangle with the property that h = b ± 1.

Find ∑ L for the twelve smallest isosceles triangles for which h = b ± 1 and b, L are positive integers.

     * */
    class Problem138 : IProblem
    {
        public string Calculate()
        {
            long sum = 0;
            int count = 0;
            int limit = 12;

            long n = 0;

            while (count != limit)
            {
                n++;
                long temp = 5 * n * n + 1;
                double result = Math.Sqrt(temp);

                long m = 0;

                if ((long)result == result)
                {
                    m = 2 * n + (long)result;
                }
                else
                {
                    temp -= 2;
                    result = Math.Sqrt(temp);

                    if ((long)result == result)
                    {
                        m = 2 * n + (long)result;
                    }
                }

                if (m != 0)
                {
                    sum += m * m + n * n;
                    count++;
                    Console.WriteLine("b={0}, h={1}, L={2}", 2 * m * n, m * m - n * n, m * m + n * n);
                }
            }

            return sum.ToString();
        }
    }
}
